package com.zyf.pattern.proxy.jdk;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

/**
 * 58 同城 找工作代理
 * create by yifeng
 */
public class JDK58 implements InvocationHandler {

    // 被代理的对象,把引用保存下来
    private Person target;
    public Object getInstance(Person target) throws Exception{
        this.target = target;

        Class<?> clazz = target.getClass();

        // 用来生成一个新的对象（字节码重组来实现）
        return Proxy.newProxyInstance(clazz.getClassLoader(),  clazz.getInterfaces(), this);
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("我是58，我要给你找工作，现在已经" +
                "拿到你的简历，开始投递");
        System.out.println("开始寻找工作");
        method.invoke(this.target, args);

        System.out.println("如果合适，安排面试");
        return null;
    }
}
